package org.smardi.fakeCall.Setting;

import android.content.*;
import android.media.*;
import android.net.*;

public class SharedPreference_FakeCall {
	private Context mContext = null;
	
	private final String prefName = "org.smardi.fakeCall";
	private SharedPreferences mPref = null;
	private SharedPreferences.Editor mEditor = null;
	
	
	public SharedPreference_FakeCall(Context context) {
		mContext = context;
		
		mPref = mContext.getSharedPreferences(prefName, Context.MODE_WORLD_READABLE);
		mEditor = mPref.edit();
	}
	
	
	//--------------------------------------------------
	/**
	 * 벨소리를 사용할 것인지
	 * @return true:벨소리 사용 false:벨소리 끔
	 */
	public boolean isRingtoneUsable() {
		return mPref.getBoolean("ringtoneUsable", true);
	}
	
	/**
	 * 벨소리 사용 여부를 저장한다
	 * @param usable true:벨소리 사용 false: 벨소리 끔
	 */
	public void setRingtoneUsable(boolean usable) {
		mEditor.putBoolean("ringtoneUsable", usable);
		mEditor.commit();
	}
	
	//--------------------------------------------------
	/**
	 * 진동을 사용할 것인지
	 * @return true:진동 사용 false:진동 끔 
	 */
	public boolean isVibratorUsable() {
		return mPref.getBoolean("vibratorUsable", true);
	}
	
	/**
	 * 진동 사용 여부를 저장한다
	 * @param usable true:진동 사용 false:진동 끔
	 */
	public void setVibratorUsable(boolean usable) {
		mEditor.putBoolean("vibratorUsable", usable);
		mEditor.commit();
	}
	
	//--------------------------------------------------
	/**
	 * 벨소리의 URI를 가져온다
	 */
	public Uri getRingtoneURI() {
		String ringtoneSrc = mPref.getString("ringtoneSrc", null);
		if(ringtoneSrc != null) {
			return Uri.parse(ringtoneSrc);
		} else {
			return RingtoneManager.getActualDefaultRingtoneUri(mContext, RingtoneManager.TYPE_RINGTONE);
		}
	}
	
	/**
	 * 사용할 벨소리의 URI를 저장한다
	 * @param ringtoneURI 저장할 벨소리의 URI
	 */
	public void setRingtoneURI(Uri ringtoneUri) {
		mEditor.putString("ringtoneSrc", ringtoneUri.toString());
		mEditor.commit();
	}
	
	//--------------------------------------------------
	/**
	 * 전화 상대의 이름을 가져온다
	 */
	public String getCallerName() {
		return mPref.getString("callerName", "");
	}
	
	/**
	 * 전화 상대의 이름을 저장한다
	 * @param callerName 저장할 전화 상대의 이름
	 */
	public void setCallerName(String callerName) {
		mEditor.putString("callerName", callerName);
		mEditor.commit();
	}
	
	//--------------------------------------------------
	/**
	 * 전화 상대의 전화번호를 가져온다
	 */
	public String getCallerNumber() {
		return mPref.getString("callerNumber", "");
	}
	
	/**
	 * 전화 상대의 전화번호를 저장한다
	 * @param callerNumber 전화 상대의 전화번호 (010-0000-0000)
	 */
	public void setCallerNumber(String callerNumber) {
		mEditor.putString("callerNumber", callerNumber);
		mEditor.commit();
	}
	
	//--------------------------------------------------
	/**
	 * 등록된 클리커의 주파수를 저장한다
	 */
	public int getCLIQrFreq() {
		return mPref.getInt("CLIQrFreq", 0);
	}
	
	/**
	 * 등록된 클리커의 주파수를 가져온다
	 * @param freq CLIQ.r의 주파수
	 */
	public void setCLIQrFreq(int freq) {
		mEditor.putInt("CLIQrFreq", freq);
		mEditor.commit();
	}
	
	//--------------------------------------------------
	/**
	 * 등록된 클리커의 주파수의 인덱스를 저장한다
	 */
	public int getCLIQrFreqIndex() {
		return mPref.getInt("CLIQrFreqIndex", 0);
	}
	
	/**
	 * 등록된 클리커의 주파수 인덱스를 가져온다
	 * @param index CLIQ.r의 주파수 인덱스
	 */
	public void setCLIQrFreqIndex(int index) {
		mEditor.putInt("CLIQrFreqIndex", index);
		mEditor.commit();
	}
	//--------------------------------------------------
	
	public long getTargetTime() {
		return mPref.getLong("targetTime", 0);
	}
	
	public void setTargetTime(long time) {
		mEditor.putLong("targetTime", time);
		mEditor.commit();
	}
	//--------------------------------------------------
	/**
	 * 현재 CLIQ.r로 FakeCall을 동작시킬것인지 확인한다 
	 */
	public boolean isCLIQrMode() {
		return mPref.getBoolean("CLIQrMode", false);
	}
	
	/**
	 * CLIQ.r로 FakeCall을 동작시키는지 저장한다
	 * @param CLIQr_ON
	 */
	public void setCLIQrMode(boolean CLIQr_ON) {
		mEditor.putBoolean("CLIQrMode", CLIQr_ON);
		mEditor.commit();
	}
}
